(レポート) CMP407: Cron としての Lambda: AWS Lambda での呼び出しのスケジュール #reinvent
Lambda as Cron
この記事は AWS re:Invent 2015、CMP407 - Lambda as Cron: Scheduling Invocations in AWS Lambdaのレポートです。
[slideshare id=53676328&doc=cmp407-151008042929-lva1-app6892]
スピーカーはSophosのGuy Daviesさんです。
アジェンダ
- Lambdaをスケジュールタスクにするには
- ピュアなLambdaスケジューリングアーキテクチャ
なぜLambdaのスケジューリングが必要か
- Lambdaはイベントドリブンコンピューティング
- だが、必要な時がある
- Logのクリーンアップ
- バッチ
- アラーム
- インフラストラクチャのオートメーション
Option for scheduling Lambda function
案1
- EC2インスタンスから crontab で叩く
- 本末転倒感…
案2
Unrerailable Town Clock -> townclock.io
- AwesomeなSNS Topic
- コミュニティのサポートあり
- 15分刻み
その他の案
- SWF
- Data Pipeline
- Cloud Trail + S3
- しかし、我々は、PureなLambdaを求めている
A pure Lambda scheduler
- どのようにタイミングシグナルをAWSで作るか? -> Cloud Watch!
- CloudWatch メトリックのアラームをセット
- AlarmがALARMステータスになる
- SNSのトリガでLambdaが呼ばれる
- LambdaがMetricのStatusをinvertする
- AlarmがOKステータスになる
- SNSのトリガでLambdaが呼ばれる
- LambdaがMetricのStatusをinvertする
- CloudWatch alarmを設定する
- 1 Minutes Periodにする
- Notification actionで、OK、ALARM、INSUFFICIENTを設定する
- Putting it trigger
- Lambda cron functionがCloudWatchのInvertとLambda functionのInvokeを行う
Lambda cron functionの中身
- CloudWatchにイベントを送る
- MetricをInvert(0.0 <-> 1.0)する
- Crontab的なLambda configurationを読む -> cron-parser ライブラリを使ってパース
デモ
Cron化したLambda functionを使ってWebページの時計を更新する、というデモを行っていました。